import os
import shutil
import logging
from config import Config
from ..utils.logger import pdf_logger,extract_logger

def clear_folder_contents(folder_path):
    """
    清空文件夹内所有内容（保留文件夹本身）- 如果文件夹不存在则创建它
    :param folder_path: 文件夹路径
    :return: 操作是否成功
    """
    try:
        # 如果文件夹不存在，先创建它
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
            return True
        
        # 遍历文件夹内所有内容
        for item in os.listdir(folder_path):
            item_path = os.path.join(folder_path, item)
            # 删除文件夹
            if os.path.isfile(item_path) or os.path.islink(item_path):
                os.unlink(item_path)
            elif os.path.isdir(item_path):
                shutil.rmtree(item_path)
        return True
    except Exception as e:
        pdf_logger.error(f"❌ 清空文件夹失败：{folder_path}")
        pdf_logger.error(f"📝 错误原因：{str(e)}")
        return False

def create_output_folders():
    """
    创建输出文件夹
    """
    output_folders = [
        Config.INTERNAL_SIGN_DIR,
        Config.INSERTED_SIGN_DIR,
        Config.UNINSERTED_SIGN_DIR,
        Config.LOG_DIR
    ]
    
    for folder in output_folders:
        if not folder:
            raise ValueError(f"❌ 输出文件夹配置为空！请检查config.py中的输出路径配置")
        
        if os.path.exists(folder):
            pdf_logger.info(f"✅ 文件夹已存在：{folder}")
        else:
            os.makedirs(folder)

def process_directory(directory, skip_folders=None, skip_signature_versions=True):
    """
    遍历目录收集PDF文件，
    :param directory: 目录路径
    :param skip_folders: 要跳过的子文件夹列表
    :param skip_signature_versions: 是否跳过包含"签字版"的文件
    :return: PDF文件路径列表
    """
    skip_folders = skip_folders or []
    pdf_files = []
    pdf_logger.info(f"🔍 开始遍历目录：{directory}")
    pdf_logger.info(f"⚠️  跳过子文件夹：{skip_folders if skip_folders else '无'}")
    rule_text = "跳过路径包含'签字版'的文件" if skip_signature_versions else "不过滤签字版文件"
    pdf_logger.info(f"⚠️  过滤规则：{rule_text}")

    for root, dirs, files in os.walk(directory):
        # 过滤跳过的文件夹
        dirs[:] = [d for d in dirs if d not in skip_folders]
        
        for file in files:
            if file.lower().endswith(".pdf"):
                pdf_path = os.path.join(root, file)
                
                # 过滤路径中包含"签字版"的文件（文件夹或文件名包含）
                if skip_signature_versions and '签字版' in pdf_path:
                    pdf_logger.info(f"⚠️ 跳过签字版文件：{os.path.basename(pdf_path)}（路径包含'签字版'）")
                    continue
                
                pdf_files.append(pdf_path)
                pdf_logger.info(f"✅ 找到PDF：{os.path.basename(pdf_path)}（路径：{pdf_path}）")

    pdf_logger.info(f"📊 目录遍历完成：共找到 {len(pdf_files)} 个有效PDF文件\n")
    return pdf_files